import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.Properties;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

import prueba.SBPrueba;
import shm.capaDatos.vo.CapacidadComunicacionalVO;
import shm.capaDatos.vo.CiudadVO;
import shm.capaDatos.vo.CompromisoVO;
import shm.capaDatos.vo.ConocimientoProcesosNegocioVO;
import shm.capaDatos.vo.ConocimientoTecnologicoVO;
import shm.capaDatos.vo.DatosContactoVO;
import shm.capaDatos.vo.DisposicionVO;
import shm.capaDatos.vo.EntendimientoRequerimientosVO;
import shm.capaDatos.vo.EstadoProyectoVO;
import shm.capaDatos.vo.EstadoStakeholderVO;
import shm.capaDatos.vo.GrupoVO;
import shm.capaDatos.vo.ImpactoProyectoVO;
import shm.capaDatos.vo.InfluenciaVO;
import shm.capaDatos.vo.OrganizacionVO;
import shm.capaDatos.vo.PaisVO;
import shm.capaDatos.vo.PerfilVO;
import shm.capaDatos.vo.PermisoVO;
import shm.capaDatos.vo.PersonaVO;
import shm.capaDatos.vo.PoderVO;
import shm.capaDatos.vo.PreocupacionVO;
import shm.capaDatos.vo.ProvinciaVO;
import shm.capaDatos.vo.ProximidadVO;
import shm.capaDatos.vo.ProyectoVO;
import shm.capaDatos.vo.ReceptividadVO;
import shm.capaDatos.vo.StakeholderVO;
import shm.capaDatos.vo.TelefonoVO;
import shm.capaDatos.vo.TipoPermisoVO;
import shm.capaDatos.vo.TipoRelacionVO;
import shm.capaDatos.vo.TipoStakeholderVO;
import shm.capaDatos.vo.TipoTelefonoVO;
import shm.capaDatos.vo.UsuarioVO;
import shm.capaNegocio.BusinessFacade;
import shm.excepciones.BuscarEntidadException;
import shm.excepciones.EliminarEntidadException;
import shm.excepciones.EliminarEntidadVinculadaException;
import shm.excepciones.GuardarEntidadException;
import shm.excepciones.GuardarEntidadDesactualizadaException;


public class CargaEntidades {
	/*public static void main(String[] args) throws NamingException {
		Context context = Prueba.getInitialContext();
		SBPrueba sbPrueba = (SBPrueba) context.lookup( "SHEnterpriseProject/SHManager/SBPruebaBean!prueba.SBPrueba" );

		BusinessFacade facade = (BusinessFacade)context.lookup( "SHEnterpriseProject/SHManager/BusinessFacadeBean!shm.capaNegocio.BusinessFacade" );
		ProyectoVO proyectoB = new ProyectoVO(null, "", null, null, null);
		List<ProyectoVO> proyectos = null;
		//try {
			//proyectos = facade.buscarListaProyectos(proyectoB);
		//} catch (BuscarEntidadException e) {
			// TODO Auto-generated catch block
			//System.out.println(e.getMensaje());
		//}
		Iterator<ProyectoVO> proI = proyectos.iterator();
		ProyectoVO proyectoSel = null;
		if(proI.hasNext()){
			proyectoSel=proI.next();

		}	

		List<TipoRelacionVO> tiposRelaciones= facade.obtenerTiposRelaciones();
		OrganizacionVO organizacion0 = new OrganizacionVO(null,null,"SRL",null, null);
		
		List<OrganizacionVO> organizaciones= null;
		//try {
			//organizaciones = facade.buscarListaOrganizaciones(organizacion0);
		//} catch (BuscarEntidadException e2) {
			// TODO Auto-generated catch block
			//e2.printStackTrace();
		//}
		
		List<GrupoVO> grupos=null;
		//try {
			//grupos = facade.buscarListaGrupos(new GrupoVO(null, null, "%", null, null));
		//} catch (BuscarEntidadException e1) {
			// TODO Auto-generated catch block
			//e1.printStackTrace();
		//}

		

		

		List<CompromisoVO> compromisos = facade.obtenerCompromisos();

		List<InfluenciaVO> influencias= facade.obtenerInfluencias();

		List<ProximidadVO> proximidades= facade.obtenerProximidades();

		List<TipoStakeholderVO> tiposStakeholder = facade.buscarTodosTiposStakeholder();

		List<EstadoStakeholderVO> estadosStakeholder = facade.obtenerEstadosStakeholders();


		List<ImpactoProyectoVO> impactosProyecto = facade.obtenerImpactosProyecto();

		List<PoderVO> poderes = facade.obtenerPoderes();
		List<PreocupacionVO> preocupaciones = facade.obtenerPreocupaciones();
		List<DisposicionVO> disposiciones = facade.obtenerDisposiciones();
		List<ReceptividadVO> receptividades = facade.obtenerReceptividades();
		List<PaisVO> paises = facade.obtenerPaises();
		List<ProvinciaVO> provincias = facade.obtenerProvincias(paises.get(0));
		List<CiudadVO> ciudades = facade.obtenerCiudades(provincias.get(0));
		List<TipoTelefonoVO> tiposTelefono = facade.obtenerTiposTelefono();
		List<TelefonoVO> telefonos = new ArrayList<TelefonoVO>();
		//telefonos.add(new TelefonoVO(null, "42526272", tiposTelefono.get(1)));
		//telefonos.add(new TelefonoVO(null, "1552627282", tiposTelefono.get(0)));
		List<TelefonoVO> telefonos2 = new ArrayList<TelefonoVO>();
		//telefonos2.add(new TelefonoVO(null, "42526282", tiposTelefono.get(2)));
		//telefonos2.add(new TelefonoVO(null, "1552628282", tiposTelefono.get(3)));
		DatosContactoVO datosContacto1 = new DatosContactoVO(null, "Contacto Stakehoder", "paginaWeb", "mail", telefonos, ciudades.get(0), "direccion", "codigoPostal");
		DatosContactoVO datosContacto2 = new DatosContactoVO(null, "Contacto Stakehoder2", "paginaWeb2", "mail2", telefonos2, ciudades.get(0), "direccion2", "codigoPostal2");
		List<EntendimientoRequerimientosVO> entendimientosRequerimientos = facade.obtenerEntendimientosRequerimientos();
		List<ConocimientoProcesosNegocioVO> conocimientosProcesosNegocio = facade.obtenerConocimientosProcesosNegocio();
		
		
		StakeholderVO stakeholder1 = new StakeholderVO(null, null, organizaciones.get(0),proyectoSel, "beneficiosProyecto", "perjuiciosProyecto", impactosProyecto.get(0), false, 
				null, tiposStakeholder.get(0), poderes.get(0), preocupaciones.get(0), compromisos.get(0), disposiciones.get(0), "estrategiaGerenciamiento",
				influencias.get(0), proximidades.get(0), receptividades.get(0), "descripcion", datosContacto1, entendimientosRequerimientos.get(0), 
				conocimientosProcesosNegocio.get(2),estadosStakeholder.get(0), null);
		StakeholderVO stakeholder2 = new StakeholderVO(null, null, grupos.get(0),proyectoSel, "beneficiosProyecto2", "perjuiciosProyecto2", impactosProyecto.get(1), false, 
				null, tiposStakeholder.get(1), poderes.get(1), preocupaciones.get(1), compromisos.get(1), disposiciones.get(1), "estrategiaGerenciamiento2",
				influencias.get(1), proximidades.get(1), receptividades.get(1), "descripcion2", datosContacto2, entendimientosRequerimientos.get(1), 
				conocimientosProcesosNegocio.get(1),estadosStakeholder.get(1), null);
		try {
			//stakeholder1 = facade.guardarStakeholder(stakeholder1);
			//stakeholder2 = facade.guardarStakeholder(stakeholder2);
		} catch (GuardarEntidadException e) {
			System.out.println(e.getMensaje());
		}

		
	}
	
	private static void imprimirDatosUsuario(UsuarioVO usuario){
		System.out.println("Nombre usuario: " + usuario.getNombreUsuario() + " ID: " + usuario.getId() + " Perfil: " + usuario.getPerfil().getNombre());
		List<PermisoVO> permisos = usuario.getPermisos();
		if(permisos != null){
			Iterator<PermisoVO> i = permisos.iterator();
			System.out.println("Permisos: ");
			while(i.hasNext()){
				PermisoVO permiso = i.next();
				System.out.println("Id: " + permiso.getId() + " Tipo Permiso: " + permiso.getTipoPermiso().getNombre() + " Proyecto: "+ permiso.getProyecto().getNombre() );
			}
		}else{
			System.out.println("No tiene permisos.");
		}
	}
	

	public static Context getInitialContext() throws NamingException {
		
		String JBOSS_CONTEXT="org.jboss.naming.remote.client.InitialContextFactory";
		Context context = null;
		
		try {
			Properties props = new Properties();  
			props.put(Context.INITIAL_CONTEXT_FACTORY, JBOSS_CONTEXT);
			props.put(Context.PROVIDER_URL, "remote://localhost:4447");  
			props.put(Context.SECURITY_PRINCIPAL, "user1234");  
			props.put(Context.SECURITY_CREDENTIALS, "user4321");  
			props.put("jboss.naming.client.ejb.context", true);
			context = new InitialContext(props);
			System.out.println("\n\tGot initial Context: "+context);
			return context;
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}  
	}*/
}
